(function($){$.fn.tinyscrollbar=function(options){var defaults={axis:'y',wheel:40,scroll:true};var options=$.extend(defaults,options);var oWrapper=$(this);var oViewport={obj:$('.viewport',this)};var oContent={obj:$('.overview',this)};var oScrollbar={obj:$('.scrollbar',this)};var oTrack={obj:$('.track',oScrollbar.obj)};var oThumb={obj:$('.thumb',oScrollbar.obj)};var sAxis=options.axis=='x',sDirection=sAxis?'left':'top',sSize=sAxis?'width':'height';var iScroll=0,iPosition={start:0,now:0},iMouse={};if(this.length>1){this.each(function(){$(this).tinyscrollbar(options)});return this;} this.initialize=function(){this.update();setEvents();};this.update=function(){oViewport[options.axis]=sAxis?oViewport.obj[0].offsetWidth:oViewport.obj[0].offsetHeight;oContent[options.axis]=sAxis?oContent.obj[0].scrollWidth:oContent.obj[0].scrollHeight;oContent.ratio=oViewport[options.axis]/oContent[options.axis];oScrollbar.obj.toggleClass('disable',oContent.ratio>=1);iMouse['start']=oThumb.obj.offset()[sDirection];oTrack.obj.css(sSize,oViewport[options.axis]);oTrack[options.axis]=sAxis?oTrack.obj[0].offsetWidth:oTrack.obj[0].offsetHeight;oThumb[options.axis]=Math.min(oTrack[options.axis],Math.max(0,(oTrack[options.axis]*oContent.ratio)));oThumb.obj.css(sSize,oThumb[options.axis]);oScrollbar.ratio=oContent[options.axis]/oTrack[options.axis];};function setEvents(){oThumb.obj.bind('mousedown',start);oTrack.obj.bind('mouseup',drag);if(options.scroll&&this.addEventListener){oWrapper[0].addEventListener('DOMMouseScroll',wheel,false);oWrapper[0].addEventListener('mousewheel',wheel,false);} else if(options.scroll){oWrapper[0].onmousewheel=wheel;}};function start(oEvent){iMouse.start=sAxis?oEvent.pageX:oEvent.pageY;iPosition.start=parseInt(oThumb.obj.css(sDirection));$(document).bind('mousemove',drag);$(document).bind('mouseup',end);oThumb.obj.bind('mouseup',end);return false;};function wheel(oEvent){if(!(oContent.ratio>=1)){oEvent=$.event.fix(oEvent||window.event);var iDelta=oEvent.wheelDelta?oEvent.wheelDelta/120:-oEvent.detail/3;iScroll-=iDelta*options.wheel;iScroll=Math.min((oContent[options.axis]-oViewport[options.axis]),Math.max(0,iScroll));oThumb.obj.css(sDirection,iScroll/oScrollbar.ratio);oContent.obj.css(sDirection,-iScroll);oEvent.preventDefault();};};function end(oEvent){$(document).unbind('mousemove',drag);$(document).unbind('mouseup',end);oThumb.obj.unbind('mouseup',end);return false;};function drag(oEvent){if(!(oContent.ratio>=1)){iPosition.now=Math.min((oTrack[options.axis]-oThumb[options.axis]),Math.max(0,(iPosition.start+((sAxis?oEvent.pageX:oEvent.pageY)-iMouse.start))));iScroll=iPosition.now*oScrollbar.ratio;oContent.obj.css(sDirection,-iScroll);oThumb.obj.css(sDirection,iPosition.now);;} return false;};return this.initialize();};})(jQuery);